package com.sfc.client.handler;


import com.sfc.client.business.SpiderManager;
import com.sfc.client.constant.ConfigConstants;
import com.sfc.client.sdk.CIMEventBroadcastReceiver;
import com.sfc.client.sdk.CIMEventListener;
import com.sfc.client.sdk.CIMPushManager;
import com.sfc.client.sdk.model.Message;
import com.sfc.client.sdk.model.ReplyBody;
import com.sfc.client.sdk.model.SentBody;
import com.sfc.client.util.PropertiesUtil;
import com.sfc.constants.Commands;
import org.apache.dubbo.common.extension.ExtensionLoader;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class BindHandler implements CIMEventListener {

    @Override
    public void onConnectionClosed() {
        System.out.println("onConnectionClosed");
        /*
         * 在此可以将事件分发到各个监听了CIMEventBroadcastReceiver的地方
         * 第一步 连接到服务器 在需要监听事件的类调用CIMListenerManager.registerMessageListener(listener);
         * 第二部 在此调用CIMListenerManager.notifyOnConnectionClosed()
         */
    }


    @Override
    public void onConnectFailed() {
        System.out.println("onConnectionFailed");
        /*
         * 在此可以将事件分发到各个监听了CIMEventBroadcastReceiver的地方
         * 第一步 连接到服务器 在需要监听事件的类调用CIMListenerManager.registerMessageListener(listener);
         * 第二部 在此调用CIMListenerManager.notifyOnConnectionFailed(e)
         */
    }

    @Override
    public void onConnectFinished(boolean hasAutoBind) {
        System.out.println("onConnectFinished");
        InetAddress addr = null;
        try {
            addr = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        String ip = addr.getHostAddress();
        if (!hasAutoBind) {
            CIMPushManager.bindAccount(ip);
        }
        /*
         * 在此可以将事件分发到各个监听了CIMEventBroadcastReceiver的地方
         * 第一步 连接到服务器 在需要监听事件的类调用CIMListenerManager.registerMessageListener(listener);
         * 第二部 在此调用CIMListenerManager.onConnectFinished(hasAutoBind)
         */
    }

    @Override
    public void onMessageReceived(Message message) {

        System.out.println(message.toString());
        ExtensionLoader<SpiderManager> loader = ExtensionLoader.getExtensionLoader(SpiderManager.class);
        System.out.println("============================================");
        SpiderManager apple = loader.getExtension(Commands.getValue(message.getContent()));
        apple.hander();
        /*
         * 在此可以将事件分发到各个监听了CIMEventBroadcastReceiver的地方
         * 第一步 连接到服务器 在需要监听事件的类调用CIMListenerManager.registerMessageListener(listener);
         * 第二部 在此调用CIMListenerManager.notifyOnMessageReceived(message)
         */
    }


    @Override
    public void onReplyReceived(ReplyBody replybody) {
        System.out.println(replybody.toString());
        /*
         * 在此可以将事件分发到各个监听了CIMEventBroadcastReceiver的地方
         * 第一步 连接到服务器 在需要监听事件的类调用CIMListenerManager.registerMessageListener(listener);
         * 第二部 在此调用CIMListenerManager.notifyOnReplyReceived(replybody)
         */
    }

    @Override
    public void onSendFinished(SentBody sentBody) {

    }

    @Override
    public int getEventDispatchOrder() {
        return 1;
    }

}
